#pragma once

#include "Shape.h"

class ShapeFacade
{
public:
    ShapeFacade()
    {
        this->m_rectangle = new Rectangle();
        this->m_circle    = new Circle();
        this->m_square    = new Square();
    }

    virtual ~ShapeFacade()
    {
        delete this->m_rectangle;
        delete this->m_circle;
        delete this->m_square;
    }

public:
    void drawRectangle()
    {
        this->m_rectangle->draw();
    }

    void drawCircle()
    {
        this->m_circle->draw();
    }

    void drawSquare()
    {
        this->m_square->draw();
    }

protected:
    Shape *m_rectangle;
    Shape *m_circle;
    Shape *m_square;
};